A business service in Oracle service bus (OSB) generally invokes, e.g., sends a request to, multiple services hosted on a number of back-end servers. Such services can be hosted on a single server, and multiple business services may invoke services hosted on the same server. Currently, OSB customers may restrict the number of concurrent requests made to a particular server or group of servers by specifying a number of constraints that are applicable to a particular business service or a group of multiple business services. This is necessitated by the fact that the server (or servers) hosting the services usually have resource limits and, in order to provide an acceptable level of service, the server(s) should not be over-loaded, if possible.
These currently-used techniques have a number of significant limitations. For example, a constraint value generally needs to be specified for every business service that makes requests to a particular back-end server. Also, these constraint values typically need to be manually computed based on the total desired server constraint, which further leads to the issue of fair distribution of capacity between business services invoking the same back-end server. In addition, a given business service generally cannot have more than the specified constraint requests even if other business services invoking the same server are under a light load, thus resulting in an under-utilization of server resources. Further, there are maintainability issues that must be taken into account. For example, the constraint values for every business service typically need to be re-computed and modified whenever the load-bearing capacity of the back-end server(s) changes.
Accordingly, there remains a need for a way to address these and other deficiencies associated with the prior art.